home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 2001-09-09 | 5.3 KB | 208 lines |
- Global BMP,WX,WY
- Dim DIT(3,7)
- Global DIT()
- Restore DITHER
- For Y=0 To 7
- For X=0 To 3
- Read DIT(X,Y)
- Next
- Next
- WX=800 : WY=600
- Reserve As Work 8,WX*WY
- Screen Open 0,WX,WY,16,$8004
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- 'For A=0 To 15 : Colour A*2,A*$111 : Colour A*2+1,Min(A*$111+$11,$FFF) : Next
- For A=0 To 15 : Colour A,A*$111 : Next
- Gosub PPMCREATE
- If Exist("ram:withpattern.ppm")
- Bload "ram:withpattern.ppm",8
- Else
- Extension_8_0E8A 54 To 10
- 'Wload "dh1:sourcepattern.ppm",10
- Gosub FINDPPMSTART
- Gosub PATTERNFILL
- CLEARBOX[16,16,15+512,15+512]
- Extension_8_0472 "ram:withpattern.ppm",8
- End If
- X1=0 : Y1=0 : X2=799 : Y2=599 : Gosub RAISEDBOX
- X1=8 : Y1=8 : X2=8+512+8+7 : Y2=8+512+8+7 : Gosub RECESSEDBOX
- X1=536 : Y1=8 : X2=615 : Y2=151 : Gosub RECESSEDBOX2
- CLEARBOX[X1+8,Y1+8,X2-8,Y2-8]
- X1=616 : Y1=8 : X2=791 : Y2=151 : Gosub RECESSEDBOX2
- X1=536 : Y1=156 : X2=791 : Y2=483 : Gosub RAISEDBOX2
- For CNT=0 To 7
- X1=536+8 : Y1=156+8+CNT*40 : X2=X1+31 : Y2=Y1+31 : Gosub RECESSEDBOX
- CLEARBOX[X1+8,Y1+8,X2-8,Y2-8]
- X1=584 : Y1=156+8+CNT*40 : X2=X1+31 : Y2=Y1+31 : Gosub RECESSEDBOX2
- X1=624 : Y1=156+8+CNT*40 : X2=783 : Y2=Y1+31 : Gosub RECESSEDBOX
- CLEARBOX[X1+8,Y1+8,X2-8,Y2-8]
- Next
- X1=536 : Y1=488 : X2=663 : Y2=Y1+47 : Gosub RAISEDBOX
- X1=664 : Y1=488 : X2=791 : Y2=Y1+47 : Gosub RAISEDBOX
- 'Wload "dh1:ko.ppm",10
- 'Gosub FINDPPMSTART
- 'Gosub PASTELOGO
- Extension_8_0472 "ram:panel.ppm",8
- End
- RAISEDBOX:
- For A=0 To 7
- VSHADE[X1+A,Y1+A,Y2-A-1,(8-A)*12]
- VSHADE[X2-A,Y1+A+1,Y2-A,(A-8)*12]
- HSHADE[X1+A,X2-A-1,Y1+A,(8-A)*12]
- HSHADE[X1+A+1,X2-A,Y2-A,(A-8)*12]
- Next
- Return
- RECESSEDBOX:
- For A=0 To 7
- VSHADE[X1+A,Y1+A,Y2-A-1,-A*12]
- VSHADE[X2-A,Y1+A+1,Y2-A,A*12]
- HSHADE[X1+A,X2-A-1,Y1+A,-A*12]
- HSHADE[X1+A+1,X2-A,Y2-A,A*12]
- Next
- Return
- RAISEDBOX2:
- For A=0 To 7
- VSHADE[X1+A,Y1+A,Y2-A,A*8]
- VSHADE[X2-A,Y1+A,Y2-A,A*8]
- HSHADE[X1+A,X2-A,Y1+A,A*8]
- HSHADE[X1+A,X2-A,Y2-A,A*8]
- Next
- For A=Y1+8 To Y2-8
- HSHADE[X1+8,X2-8,A,64]
- Next
- Return
- RECESSEDBOX2:
- For A=0 To 7
- VSHADE[X1+A,Y1+A,Y2-A,-A*8]
- VSHADE[X2-A,Y1+A,Y2-A,-A*8]
- HSHADE[X1+A,X2-A,Y1+A,-A*8]
- HSHADE[X1+A,X2-A,Y2-A,-A*8]
- Next
- For A=Y1+8 To Y2-8
- HSHADE[X1+8,X2-8,A,-64]
- Next
- Return
- PATTERNFILL:
- For YY=0 To 599
- For XX=0 To 799
- BA=FFB+((YY mod OY)*OX+(XX mod OX))*3
- RR=Peek(BA)
- GG=Peek(BA+1)
- BB=Peek(BA+2)
- GR=(RR+GG+BB)/3
- RR= Extension_8_1632(GR+ Extension_8_1106(XX*1.7+YY,32),0 To 255)
- GG= Extension_8_1632(GR+ Extension_8_1114(YY*2.2-XX*0.6,32),0 To 255)
- BB= Extension_8_1632(GR+ Extension_8_1106(XX*1.4-YY*1.9,32),0 To 255)
- SETPIXEL[XX,YY,RR,GG,BB]
- Next
- Next
- Return
- PASTELOGO:
- For YY=0 To OY-1
- For XX=0 To OX-1
- BA=FFB+(YY*OX+XX)*3
- RR=Peek(BA)
- GG=Peek(BA+1)
- BB=Peek(BA+2)
- If RR>16 and GG>16 and BB>15
- BA=BMP+((16+YY)*WX+624+XX)*3
- NR=Peek(BA)
- NG=Peek(BA+1)
- NB=Peek(BA+2)
- If XX<16
- SETPIXEL[624+XX,16+YY,(RR*XX+NR*(16-XX))/16,(GG*XX+NG*(16-XX))/16,(BB*XX+NB*(16-XX))/16]
- End If
- If XX>OX-16
- V=(OX-1)-XX
- SETPIXEL[624+XX,16+YY,(RR*V+NR*(16-V))/16,(GG*V+NG*(16-V))/16,(BB*V+NB*(16-V))/16]
- End If
- If(XX>15 and XX<OX-15) or YY>6
- SETPIXEL[624+XX,16+YY,RR,GG,BB]
- End If
- End If
- Next
- Next
- Return
- PPMCREATE:
- TAR$="P6"+Chr$(10)+(Str$(WX)-" ")+Str$(WY)+Chr$(10)+"255"+Chr$(10)
- Reserve As Work 8,WX*WY*3+Len(TAR$)
- STT=Start(8)
- Poke$ STT,TAR$
- BMP=STT+Len(TAR$)
- Return
- FINDPPMSTART:
- FFB=Start(10)
- DAT$=Peek$(FFB,32)
- D$= Extension_8_16B6(DAT$,1,Chr$(10))
- OX=Val( Extension_8_16B6(D$,0," "))
- OY=Val( Extension_8_16B6(D$,1," "))
- NUMLF=0
- Repeat
- If Peek(FFB)=10 Then Inc NUMLF
- Inc FFB
- Until NUMLF=3
- Return
- IMAGECOPY:
- AD=FFB
- For YY=0 To OY-1
- For XX=0 To OX-1
- TA=BMP+(X+XX)*3+(Y+YY)*TARX*3
- Poke TA,Peek(AD) : Poke TA+1,Peek(AD+1) : Poke TA+2,Peek(AD+2)
- Add AD,3
- Next
- Next
- Return
- DITHER:
- Data $0,$8,$2,$A
- Data $C,$4,$E,$6
- Data $3,$B,$1,$9
- Data $E,$7,$D,$5
-
- Data $5,$C,$E,$3
- Data $8,$0,$6,$A
- Data $D,$2,$4,$E
- Data $7,$B,$9,$1
- Procedure CLEARBOX[XX1,YY1,XX2,YY2]
- For YP=YY1 To YY2
- AAA=BMP+(YP*WX+XX1)*3
- For XP=XX1 To XX2
- Poke AAA,0
- Poke AAA+1,0
- Poke AAA+2,0
- Add AAA,3
- Extension_8_0388 XP,YP,0
- Next
- Next
- End Proc
- Procedure VSHADE[XX,YY1,YY2,V]
- For YP=YY1 To YY2
- AAA=BMP+(YP*WX+XX)*3
- RRX= Extension_8_1632(Peek(AAA)+V,0 To 255)
- GGX= Extension_8_1632(Peek(AAA+1)+V,0 To 255)
- BBX= Extension_8_1632(Peek(AAA+2)+V,0 To 255)
- Poke AAA,RRX
- Poke AAA+1,GGX
- Poke AAA+2,BBX
- Extension_8_0388 XX,YP,Min((RRX+GGX+BBX+DIT(XX and 3,YP and 3)*3)/48,15)
- Next
- End Proc
- Procedure HSHADE[XX1,XX2,YY,V]
- For XP=XX1 To XX2
- AAA=BMP+(YY*WX+XP)*3
- RRX= Extension_8_1632(Peek(AAA)+V,0 To 255)
- GGX= Extension_8_1632(Peek(AAA+1)+V,0 To 255)
- BBX= Extension_8_1632(Peek(AAA+2)+V,0 To 255)
- Poke AAA,RRX
- Poke AAA+1,GGX
- Poke AAA+2,BBX
- Extension_8_0388 XP,YY,Min((RRX+GGX+BBX+DIT(XP and 3,YY and 3)*3)/48,15)
- Next
- End Proc
- Procedure SETPIXEL[X,Y,RRX,GGX,BBX]
- AAA=BMP+(Y*WX+X)*3
- Poke AAA,RRX
- Poke AAA+1,GGX
- Poke AAA+2,BBX
- ' Turbo Plot X,Y,Best Pen(Glue Colour(RRX/16,GGX/16,BBX/16))
- Extension_8_0388 X,Y,Min((RRX+GGX+BBX+DIT(X and 3,Y and 3)*3)/48,15)
- End Proc